#include "../game.h"
#include "kung.h"

/*---------------------------------

Kung::Kung( bool spelare, short x, short y )
virtual
Konstruktor, sätter bild och typ

---------------------------------*/

Kung::Kung( bool spelare, short x, short y ) : Pjas(spelare, x, y) {
	bild = video.loadImage( spelare == VIT ? "vit_kung.bmp" : "svart_kung.bmp" );
	typ = KUNG;
}

/*---------------------------------

Kung::mojligtDrag( short x, short y )
overloadad, virtual
Kollar om kungen kan gå till x, y
Argument: positionen x,y

---------------------------------*/

bool Kung::mojligtDrag( short x, short y ) {
	if( game->pjasArray[x][y] != NULL && game->pjasArray[x][y]->spelare == spelare ) {
		return 0;
	}

	if( ( x == xpos+1 || x == xpos || x == xpos-1 ) && ( y == ypos+1 || y == ypos || y == ypos-1 ) ) {
		return 1;
	}
	return 0;
}

/*---------------------------------

void Hast::mojligtDrag( void )
overloadad, virtual
Kollar vilka positioner kungen kan gå till.
Sätter: 0 kan inte gå, 1 kan gå

---------------------------------*/

void Kung::mojligtDrag( void ) {
	// Nollställ arrayen
	for( int i = 0; i < 8; i++ ) {
		for( int j = 0; j < 8; j++ ) {
			mojligaDrag[i][j] = 0;
		}
	}

	// Array med offsets till dragen
	static const short drag[8][2] = {{1, 0}, {-1, 0}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}, {0, 1}, {0, -1}};

	// Loopa genom drag-arrayen
	for( int i = 0; i < 8; i++ ) {
		short x, y;
		x = xpos + drag[i][0];
		y = ypos + drag[i][1];
		// Avbryt om draget är utanför brädet
		if( x < 0 || x > 7 || y < 0 || y > 7 ) {
			continue;
		}

		// Kolla om draget är möjligt. (existerarPjas är bool)
		mojligaDrag[x][y] = Pjas::existerarPjas( x, y );

	}
}
